클라우드 스토리지 추가 및 서버 마운트 가이드
1. 클라우드별 스토리지 추가 방법
1.1. AWS EC2 - EBS 볼륨 추가
콘솔에서 추가
- EC2 콘솔 → Volumes → Create Volume
- 볼륨 타입 선택 (gp3, io1, io2 등)
- 크기 및 IOPS 설정
- 가용 영역을 인스턴스와 동일하게 설정
- Actions → Attach Volume → 대상 인스턴스 선택
CLI로 추가
# 볼륨 생성
aws ec2 create-volume \
--size 100 \
--volume-type gp3 \
--availability-zone ap-northeast-2a \
--tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=additional-storage}]'
# 볼륨 연결
aws ec2 attach-volume \
--volume-id vol-1234567890abcdef0 \
--instance-id i-1234567890abcdef0 \
--device /dev/sdf
1.2. Naver Cloud Platform - 스토리지 추가
콘솔에서 추가
- 서버 → 스토리지 → 블록 스토리지
- 스토리지 생성 → 크기 및 타입 선택
- 서버에 연결 → 대상 서버 선택
- 디바이스명 확인 (/dev/xvdb, /dev/xvdc 등)
1.3. KT Cloud - 디스크 추가
콘솔에서 추가
- 서버 관리 → 추가 디스크
- 디스크 크기 설정 → 서버 선택
- 연결 완료 후 서버 재시작 필요할 수 있음
2. 서버에서 디스크 인식 확인
2.1. 디스크 장치 확인
# 모든 블록 디바이스 확인
lsblk
# 디스크 파티션 상세 정보
fdisk -l
# 새로 추가된 디스크만 확인
dmesg | grep -i "new disk"
# 디바이스 재스캔 (Hot-plug 지원 시)
echo "- - -" > /sys/class/scsi_host/host0/scan
출력 예시:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
├─xvda1 202:1 0 1M 0 part
└─xvda2 202:2 0 10G 0 part /
xvdf 202:80 0 100G 0 disk # ← 새로 추가된 디스크
2.2. 디스크 정보 상세 확인
# 디스크 용량 및 파일시스템 확인
df -h
# 블록 디바이스 속성 확인
blkid
# 디스크 I/O 성능 확인
iostat -x 1
3. 파티션 생성 및 포맷
3.1. 파티션 생성 (fdisk 사용)
# 파티션 생성 시작
sudo fdisk /dev/xvdf
# fdisk 명령어 순서:
# n → (new partition)
# p → (primary partition)
# 1 → (partition number)
# Enter → (first sector - default)
# Enter → (last sector - default, 전체 사용)
# w → (write and exit)
3.2. 파티션 생성 (parted 사용 - GPT)
# 2TB 이상 디스크는 GPT 파티션 테이블 사용 권장
sudo parted /dev/xvdf
# parted 명령어 순서:
(parted) mklabel gpt
(parted) mkpart primary ext4 0% 100%
(parted) quit
3.3. 파일시스템 포맷
# ext4 파일시스템으로 포맷
sudo mkfs.ext4 /dev/xvdf1
# xfs 파일시스템으로 포맷 (대용량 권장)
sudo mkfs.xfs /dev/xvdf1
# 포맷 진행률 확인
sudo mkfs.ext4 -F -v /dev/xvdf1
4. 파일시스템 vs LVM 선택 가이드
4.1. 단순 파일시스템 방식
적합한 경우:
- 단일 디스크 사용
- 크기 변경 필요성이 낮음
- 단순한 구성 선호
설정 방법:
# 1. 파티션 생성
sudo fdisk /dev/xvdf
# 2. 파일시스템 생성
sudo mkfs.ext4 /dev/xvdf1
# 3. 마운트 포인트 생성
sudo mkdir /data
# 4. 마운트
sudo mount /dev/xvdf1 /data
4.2. LVM (Logical Volume Manager) 방식
적합한 경우:
- 여러 디스크를 하나로 통합
- 동적 크기 조정 필요
- 스냅샷 기능 활용
- 복잡한 스토리지 관리 필요
설정 방법:
# 1. Physical Volume 생성
sudo pvcreate /dev/xvdf
# 2. Volume Group 생성
sudo vgcreate data-vg /dev/xvdf
# 3. Logical Volume 생성 (전체 공간 사용)
sudo lvcreate -l 100%FREE -n data-lv data-vg
# 4. 파일시스템 생성
sudo mkfs.ext4 /dev/data-vg/data-lv
# 5. 마운트
sudo mkdir /data
sudo mount /dev/data-vg/data-lv /data
4.3. LVM 추가 디스크 확장
# 새 디스크를 기존 VG에 추가
sudo pvcreate /dev/xvdg
sudo vgextend data-vg /dev/xvdg
# LV 크기 확장
sudo lvextend -l +100%FREE /dev/data-vg/data-lv
# 파일시스템 크기 확장
sudo resize2fs /dev/data-vg/data-lv # ext4
# 또는
sudo xfs_growfs /data # xfs
5. 마운트 및 영구 설정
5.1. 임시 마운트
# 마운트 포인트 생성
sudo mkdir /data
# 임시 마운트 (재부팅 시 해제됨)
sudo mount /dev/xvdf1 /data
# 마운트 확인
df -h | grep /data
5.2. 영구 마운트 (/etc/fstab 설정)
# UUID 확인 (권장 방식)
sudo blkid /dev/xvdf1
# /etc/fstab 파일 편집
sudo vim /etc/fstab
# fstab 항목 추가 (UUID 사용)
UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults,nofail 0 2
# 또는 디바이스명 사용 (권장하지 않음)
/dev/xvdf1 /data ext4 defaults,nofail 0 2
5.3. fstab 옵션 설명
# 기본 옵션
defaults # 기본 마운트 옵션 (rw,suid,dev,exec,auto,nouser,async)
nofail # 디바이스가 없어도 부팅 실패하지 않음
noatime # 액세스 타임 업데이트 비활성화 (성능 향상)
# 보안 옵션
nosuid # setuid 비트 무시
nodev # 디바이스 파일 접근 차단
noexec # 실행 파일 실행 차단
# 예시: 보안이 중요한 데이터 디렉토리
UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults,nofail,nosuid,nodev 0 2
5.4. 설정 테스트
# fstab 구문 검사
sudo mount -a
# 재부팅하지 않고 마운트 테스트
sudo umount /data
sudo mount /data
# 부팅 시 자동 마운트 확인
sudo systemctl daemon-reload
6. 실무 시나리오별 권장사항
6.1. 웹 서버 로그 디스크
요구사항: 로그 파일 저장, 빠른 쓰기 성능
# 단순 파일시스템 방식 권장
sudo mkfs.ext4 /dev/xvdf1
echo "UUID=$(blkid -s UUID -o value /dev/xvdf1) /var/log/nginx ext4 defaults,nofail,noatime 0 2" >> /etc/fstab
6.2. 데이터베이스 스토리지
요구사항: 높은 IOPS, 확장 가능성, 백업 지원
# LVM + XFS 권장
sudo pvcreate /dev/xvdf
sudo vgcreate db-vg /dev/xvdf
sudo lvcreate -l 100%FREE -n mysql-lv db-vg
sudo mkfs.xfs /dev/db-vg/mysql-lv
# fstab 설정
echo "UUID=$(blkid -s UUID -o value /dev/db-vg/mysql-lv) /var/lib/mysql xfs defaults,nofail,noatime 0 2" >> /etc/fstab
6.3. 컨테이너 스토리지 (Docker/Kubernetes)
요구사항: 동적 확장, 다중 볼륨 관리
# LVM thin provisioning 권장
sudo pvcreate /dev/xvdf
sudo vgcreate docker-vg /dev/xvdf
sudo lvcreate --type thin-pool -l 95%FREE --poolmetadatasize 1G -n docker-pool docker-vg
# Docker에서 direct-lvm 사용 설정
cat > /etc/docker/daemon.json << EOF
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/docker--vg-docker--pool",
"dm.use_deferred_removal=true",
"dm.use_deferred_deletion=true"
]
}
EOF
6.4. 공유 스토리지 (NFS)
요구사항: 네트워크 공유, 다중 서버 접근
# NFS 서버 설정
sudo mkfs.ext4 /dev/xvdf1
sudo mkdir /shared
sudo mount /dev/xvdf1 /shared
# NFS 공유 설정
echo "/shared *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
sudo systemctl restart nfs-server
# 클라이언트에서 마운트
sudo mount -t nfs 192.168.1.100:/shared /mnt/shared
7. 모니터링 및 유지보수
7.1. 디스크 사용량 모니터링
# 디스크 사용량 확인
df -h
# inode 사용량 확인
df -i
# 디렉토리별 사용량 확인
du -sh /data/*
# 실시간 I/O 모니터링
iotop
7.2. 디스크 성능 테스트
# 순차 쓰기 성능 테스트
sudo dd if=/dev/zero of=/data/testfile bs=1G count=1 oflag=dsync
# 랜덤 I/O 성능 테스트 (fio 필요)
sudo fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=1 --filename=/data/testfile
7.3. 백업 및 스냅샷
# LVM 스냅샷 생성
sudo lvcreate -L 10G -s -n data-snapshot /dev/data-vg/data-lv
# 스냅샷 마운트
sudo mkdir /backup
sudo mount /dev/data-vg/data-snapshot /backup
# 백업 완료 후 스냅샷 제거
sudo umount /backup
sudo lvremove /dev/data-vg/data-snapshot
8. 트러블슈팅
8.1. 일반적인 문제들
디스크가 인식되지 않는 경우:
# 하드웨어 재검색
echo "- - -" > /sys/class/scsi_host/host*/scan
# 모듈 재로드
sudo modprobe -r sd_mod && sudo modprobe sd_mod
마운트 실패:
# 파일시스템 체크
sudo fsck -f /dev/xvdf1
# 강제 마운트 (읽기 전용)
sudo mount -o ro /dev/xvdf1 /data
부팅 실패 (fstab 오류):
# 복구 모드에서 fstab 수정
sudo mount -o remount,rw /
sudo vim /etc/fstab
# 문제가 되는 라인 주석 처리 또는 수정
8.2. 성능 최적화
# 스케줄러 변경 (SSD용)
echo none > /sys/block/xvdf/queue/scheduler
# I/O 큐 크기 조정
echo 1024 > /sys/block/xvdf/queue/nr_requests
# readahead 크기 조정
sudo blockdev --setra 256 /dev/xvdf
참고사항
- 클라우드별 특성: AWS의 경우 EBS 최적화 인스턴스 사용 권장
- 보안: 중요한 데이터는 암호화된 볼륨 사용 고려
- 백업: 정기적인 스냅샷 또는 백업 정책 수립 필요
- 모니터링: CloudWatch, Datadog 등을 통한 디스크 성능 모니터링 권장